﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//librerias especiales para la BD
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Data.SqlTypes;

namespace CityGames
{
    public class CADPartidoPlayoff
    {
        static private string cadConexion = System.Configuration.ConfigurationManager.ConnectionStrings["CityGames.Properties.Settings.BDCityGamesConnectionString"].ConnectionString;
       
        /// <summary>
        /// Funcion para obtener los datos de la Base de Datos
        /// </summary>
        /// <param name="select">
        /// Select que vamos a ejecutar</param>
        /// <param name="nombreTabla">
        /// Número de la tabla que vamos a atacar</param>
        /// <returns>
        /// Datos de la Noticia en un DataSet</returns>
        public DataSet ObtenerDatos(string select, string nombreTabla)
        {
            DataSet resultado = new DataSet();

            try
            {
                SqlConnection conexion = new SqlConnection(cadConexion);
                SqlDataAdapter da = new SqlDataAdapter(select, conexion);
                da.Fill(resultado, nombreTabla);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return resultado;
        }

        /// <summary>
        /// Funcion para insertar datos modificados
        /// </summary>
        /// <param name="datosModificados">
        /// DataSet con los datos</param>
        /// <param name="select">
        /// Select anterior usado para el dataset</param>
        /// <returns>
        /// Devuelve true si ha insertado los datos modificados</returns>
        public bool InsertarDatosModificados(DataSet datosModificados, string select)
        {
            bool resultado = false;

            try
            {
                SqlConnection conexion = new SqlConnection(cadConexion);
                SqlDataAdapter da = new SqlDataAdapter(select, conexion);
                SqlCommandBuilder cb = new SqlCommandBuilder(da);
                string nombredt = datosModificados.Tables[0].TableName;
                da.Update(datosModificados, nombredt);
                resultado = true;
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return resultado;
        }

        /// <summary>
        /// Funcion para obtener los partidos de un evento
        /// </summary>
        /// <param name="nombreEvento">
        /// Nombre del evento del que queremos obtener los partidos</param>
        /// <returns>
        /// Devuelve el DataSet con los partidos</returns>
        public DataSet ObtenerPartidos(string nombreEvento)
        {
            string select = "SELECT NombreEvento, Partido, DNISocioA, DNISocioB, PuntosA, PuntosB FROM PartidoPlayOff";
            select += " WHERE NombreEvento = '" + nombreEvento + "'";
            select += " ORDER BY Partido";
            DataSet partidos = new DataSet();

            try
            {
                partidos = ObtenerDatos(select, "PartidoPlayOff");
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return partidos;
        }

        /// <summary>
        /// Funcion para obtener los dos ultimos partidos de un evento
        /// </summary>
        /// <param name="nombreEvento">
        /// Nombre del evento del que queremos obtener los partidos</param>
        /// <returns>
        /// Devuelve el DataSet con los dos ultimos partidos</returns>
        public DataSet ObtenerDosUltimosPartidos(string nombreEvento)
        {
            string select = "SELECT TOP(3) NombreEvento, Partido, DNISocioA, DNISocioB, PuntosA, PuntosB FROM PartidoPlayOff";
            select += " WHERE NombreEvento = '" + nombreEvento + "'";
            select += " ORDER BY Partido DESC";
            DataSet partidos = new DataSet();

            try
            {
                partidos = ObtenerDatos(select, "PartidoPlayOff");
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return partidos;
        }

        /// <summary>
        /// Funcion para guardar los partidos
        /// </summary>
        /// <param name="partidos">
        /// DataSet con todos los partidos del playoff</param>
        /// <param name="evento">
        /// Evento en el que quiere guardar</param>
        /// <returns>
        /// Devuelve true si ha podido guardar los partidos</returns>
        public bool GuardarPartidosDePlayoff(DataSet partidos, string nombreEvento)
        {
            bool resultado = false;
            string select = "";

            try
            {
                select += "SELECT NombreEvento, Partido, DNISocioA, DNISocioB, PuntosA, PuntosB FROM PartidoPlayOff";
                select += " WHERE NombreEvento = '" + nombreEvento + "'";
                select += " ORDER BY Partido";

                resultado = InsertarDatosModificados(partidos, select);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return resultado;
        }
    }
}
